--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_rns_filesync_handler.py 9f71f3420c18d5800afb493b723c328d23c7ea12 (9f71f342) Text, 4.45 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72from T7ee787types Tff7b72import Te6edf3SimpleNamespace
Tff7b72from T7ee787unittestT7ee787.T7ee787mock Tff7b72import Te6edf3MagicMockTb4b4b4, Te6edf3patch
Tff7b72import T7ee787pytest
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787rns_filesync_handler Tff7b72import Te6edf3RnsFilesyncHandler
Tf0883e@pytestTff7b72.Td2a8fffixture
Tff7b72def Td2a8ffmock_identityTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72return Te6edf3SimpleNamespaceTb4b4b4(Tffa657hashTff7b72=Ta5d6ffbTa5d6ff"Tffea00\xaaTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)
Tf0883e@pytestTff7b72.Td2a8fffixture
Tff7b72def Td2a8ffhandlerTb4b4b4(Te6edf3mock_identityTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3storage Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffidentityTa5d6ff"
Te6edf3storageTff7b72.Td2a8ffmkdirTb4b4b4(Tb4b4b4)
Tff7b72return Te6edf3RnsFilesyncHandlerTb4b4b4(
Te6edf3reticulum_instanceTff7b72=Te6edf3MagicMockTb4b4b4(Te6edf3nameTff7b72=Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3identityTff7b72=Te6edf3mock_identityTb4b4b4,
Te6edf3storage_dirTff7b72=Tffa657strTb4b4b4(Te6edf3storageTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fftest_default_status_not_runningTb4b4b4(Te6edf3handlerTb4b4b4, Te6edf3mock_identityTb4b4b4)Tb4b4b4:
Te6edf3status Tff7b72= Te6edf3handlerTff7b72.Td2a8ffget_statusTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffrunningTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72None
Tff7b72assert Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffidentity_hashTa5d6ff"Tb4b4b4] Tff7b72== Te6edf3mock_identityTff7b72.Td2a8ffhashTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffsync_directoryTa5d6ff"Tb4b4b4]Tff7b72.Td2a8ffendswithTb4b4b4(Ta5d6ff"Ta5d6fffilesync/syncTa5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6ff"Ta5d6fffilesyncTa5d6ff" Tff7b72in Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffconfig_directoryTa5d6ff"Tb4b4b4]
Tff7b72def Td2a8fftest_update_settings_persists_sync_directoryTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4:
Te6edf3result Tff7b72= Te6edf3handlerTff7b72.Td2a8ffupdate_settingsTb4b4b4(Te6edf3sync_directoryTff7b72=Ta5d6ff"Ta5d6ff/tmp/filesync-altTa5d6ff"Tb4b4b4, Te6edf3monitorTff7b72=Tff7b72FalseTb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffmonitorTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Te6edf3status Tff7b72= Te6edf3handlerTff7b72.Td2a8ffget_statusTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffsync_directoryTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ff/tmp/filesync-altTa5d6ff"
Tff7b72assert Te6edf3statusTb4b4b4[Ta5d6ff"Ta5d6ffmonitorTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72def Td2a8fftest_acl_grant_and_persistTb4b4b4(Te6edf3handlerTb4b4b4, Te6edf3tmp_pathTb4b4b4)Tb4b4b4:
Te6edf3peer Tff7b72= Ta5d6ff"Ta5d6ffbbTa5d6ff" Tff7b72* T79c0ff16
Te6edf3result Tff7b72= Te6edf3handlerTff7b72.Td2a8ffupdate_aclTb4b4b4(
Te6edf3identity_hashTff7b72=Te6edf3peerTb4b4b4,
Te6edf3permsTff7b72=Tb4b4b4[Ta5d6ff"Ta5d6ffreadTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffwriteTa5d6ff"Tb4b4b4]Tb4b4b4,
Te6edf3enforceTff7b72=Tff7b72TrueTb4b4b4,
Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffenforceTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3peer Tff7b72in Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffrulesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffreadTa5d6ff"Tb4b4b4]
Tff7b72assert Te6edf3peer Tff7b72in Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffrulesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffwriteTa5d6ff"Tb4b4b4]
Te6edf3acl_path Tff7b72= Te6edf3tmp_path Tff7b72/ Ta5d6ff"Ta5d6ffidentityTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6fffilesyncTa5d6ff" Tff7b72/ Ta5d6ff"Ta5d6ffacl.txtTa5d6ff"
Tff7b72assert Te6edf3acl_pathTff7b72.Td2a8ffis_fileTb4b4b4(Tb4b4b4)
Te6edf3text Tff7b72= Te6edf3acl_pathTff7b72.Td2a8ffread_textTb4b4b4(Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4)
Tff7b72assert Ta5d6fffTa5d6ff"Ta5d6ffr:Tffd700{Te6edf3peerTffd700}Ta5d6ff" Tff7b72in Te6edf3text
Tff7b72assert Ta5d6fffTa5d6ff"Ta5d6ffw:Tffd700{Te6edf3peerTffd700}Ta5d6ff" Tff7b72in Te6edf3text
Te6edf3again Tff7b72= Te6edf3handlerTff7b72.Td2a8ffget_aclTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3againTb4b4b4[Ta5d6ff"Ta5d6ffenforceTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3peer Tff7b72in Te6edf3againTb4b4b4[Ta5d6ff"Ta5d6ffrulesTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffreadTa5d6ff"Tb4b4b4]
Tff7b72def Td2a8fftest_connect_requires_runningTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4:
Te6edf3result Tff7b72= Te6edf3handlerTff7b72.Td2a8ffconnect_peerTb4b4b4(Ta5d6ff"Ta5d6ffccTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Ta5d6ff"Ta5d6ffnot runningTa5d6ff" Tff7b72in Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4]
Tf0883e@patchTb4b4b4(Ta5d6ff"Ta5d6ffmeshchatx.src.backend.rns_filesync_handler.FileSyncServiceTa5d6ff"Tb4b4b4)
Tff7b72def Td2a8fftest_start_stop_and_teardownTb4b4b4(Te6edf3mock_service_clsTb4b4b4, Te6edf3handlerTb4b4b4)Tb4b4b4:
Te6edf3service Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3serviceTff7b72.Td2a8ffstartTff7b72.Td2a8ffreturn_value Tff7b72= Ta5d6ff"Ta5d6ffddTa5d6ff" Tff7b72* T79c0ff16
Te6edf3serviceTff7b72.Td2a8ffget_statusTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{
Ta5d6ff"Ta5d6ffrunningTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Ta5d6ff"Ta5d6ffsync_directoryTa5d6ff"Tb4b4b4: Te6edf3handlerTff7b72.Td2a8ff_sync_directoryTb4b4b4,
Ta5d6ff"Ta5d6ffidentity_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffaaTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4,
Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffddTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4,
Ta5d6ff"Ta5d6ffpeersTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6fffilesTa5d6ff"Tb4b4b4: T79c0ff0Tb4b4b4,
Ta5d6ff"Ta5d6ffwhitelistTa5d6ff"Tb4b4b4: Tff7b72FalseTb4b4b4,
Ta5d6ff"Ta5d6ffmonitorTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4,
Tb4b4b4}
Te6edf3serviceTff7b72.Td2a8fflist_peersTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffpeer_idTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4, Ta5d6ff"Ta5d6ffstatusTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4]
Te6edf3serviceTff7b72.Td2a8fflist_filesTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffa.txtTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsizeTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4}Tb4b4b4]
Te6edf3serviceTff7b72.Td2a8ffconnect_peerTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ffpeer_idTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4}
Te6edf3serviceTff7b72.Td2a8ffbrowse_peerTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4[Tb4b4b4{Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffremote.txtTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffsizeTa5d6ff"Tb4b4b4: T79c0ff2Tb4b4b4}Tb4b4b4]
Te6edf3serviceTff7b72.Td2a8ffdownload_fileTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4, Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4: Ta5d6ff"Ta5d6ffremote.txtTa5d6ff"Tb4b4b4}
Te6edf3mock_service_clsTff7b72.Td2a8ffreturn_value Tff7b72= Te6edf3service
Te6edf3started Tff7b72= Te6edf3handlerTff7b72.Td2a8ffstartTb4b4b4(Te6edf3monitorTff7b72=Tff7b72TrueTb4b4b4, Te6edf3announce_intervalTff7b72=T79c0ff120Tb4b4b4)
Tff7b72assert Te6edf3startedTb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3startedTb4b4b4[Ta5d6ff"Ta5d6ffdestination_hashTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffddTa5d6ff" Tff7b72* T79c0ff16
Te6edf3mock_service_clsTff7b72.Td2a8ffassert_called_onceTb4b4b4(Tb4b4b4)
Te6edf3kwargs Tff7b72= Te6edf3mock_service_clsTff7b72.Td2a8ffcall_argsTff7b72.Td2a8ffkwargs
Tff7b72assert Te6edf3kwargsTb4b4b4[Ta5d6ff"Ta5d6ffown_reticulumTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Te6edf3kwargsTb4b4b4[Ta5d6ff"Ta5d6ffreticulumTa5d6ff"Tb4b4b4] Tff7b72is Te6edf3handlerTff7b72.Td2a8ffreticulum
Te6edf3serviceTff7b72.Td2a8ffstartTff7b72.Td2a8ffassert_called_onceTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3handlerTff7b72.Td2a8fflist_peersTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffpeer_idTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16
Tff7b72assert Te6edf3handlerTff7b72.Td2a8fflist_filesTb4b4b4(Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffpathTa5d6ff"Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffa.txtTa5d6ff"
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffconnect_peerTb4b4b4(Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffbrowse_peerTb4b4b4(Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffdownload_fileTb4b4b4(Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4, Ta5d6ff"Ta5d6ffremote.txtTa5d6ff"Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffannounce_nowTb4b4b4(Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffdisconnect_peerTb4b4b4(Ta5d6ff"Ta5d6ffeeTa5d6ff" Tff7b72* T79c0ff16Tb4b4b4)Tb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Te6edf3stopped Tff7b72= Te6edf3handlerTff7b72.Td2a8ffstopTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3stoppedTb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72True
Tff7b72assert Te6edf3stoppedTb4b4b4[Ta5d6ff"Ta5d6ffrunningTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Te6edf3serviceTff7b72.Td2a8ffstopTff7b72.Td2a8ffassert_calledTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffservice Tff7b72is Tff7b72None
Te6edf3serviceTff7b72.Td2a8ffstopTff7b72.Td2a8ffreset_mockTb4b4b4(Tb4b4b4)
Te6edf3handlerTff7b72.Td2a8ffservice Tff7b72= Te6edf3service
Te6edf3handlerTff7b72.Td2a8ffteardownTb4b4b4(Tb4b4b4)
Te6edf3serviceTff7b72.Td2a8ffstopTff7b72.Td2a8ffassert_calledTb4b4b4(Tb4b4b4)
Tff7b72assert Te6edf3handlerTff7b72.Td2a8ffservice Tff7b72is Tff7b72None
Tff7b72def Td2a8fftest_settings_reject_sync_dir_change_while_runningTb4b4b4(Te6edf3handlerTb4b4b4)Tb4b4b4:
Te6edf3handlerTff7b72.Td2a8ffservice Tff7b72= Te6edf3MagicMockTb4b4b4(Tb4b4b4)
Te6edf3handlerTff7b72.Td2a8ffserviceTff7b72.Td2a8ffget_statusTff7b72.Td2a8ffreturn_value Tff7b72= Tb4b4b4{Ta5d6ff"Ta5d6ffrunningTa5d6ff"Tb4b4b4: Tff7b72TrueTb4b4b4}
Te6edf3result Tff7b72= Te6edf3handlerTff7b72.Td2a8ffupdate_settingsTb4b4b4(Te6edf3sync_directoryTff7b72=Ta5d6ff"Ta5d6ff/tmp/otherTa5d6ff"Tb4b4b4)
Tff7b72assert Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6ffokTa5d6ff"Tb4b4b4] Tff7b72is Tff7b72False
Tff7b72assert Ta5d6ff"Ta5d6ffstop filesyncTa5d6ff" Tff7b72in Te6edf3resultTb4b4b4[Ta5d6ff"Ta5d6fferrorTa5d6ff"Tb4b4b4]
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────